約 6,034,239 件
https://w.atwiki.jp/sampleisbest/pages/79.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 aaa アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト レジストリへの登録 regsvr32 C \aaa.dll レジストリの登録を解除 regsvr32 /u C \aaa.dll DLLの置き換え レジストリの登録を解除 シェル(explorer)を再起動 デバッグにはDebugViewを使う。 参考 ショートカットメニュー ハンドラ aaa.def ; リンカー/入力/モジュール定義ファイル LIBRARY"aaa" EXPORTS DllCanUnloadNow PRIVATE DllGetClassObject PRIVATE DllRegisterServer PRIVATE DllUnregisterServer PRIVATE aaa.h class CContextMenu public IContextMenu, public IShellExtInit { public STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); // IContextMenu STDMETHODIMP QueryContextMenu( HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags); STDMETHODIMP GetCommandString( UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax); STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO pici); // IShellExtInit STDMETHODIMP Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID); CContextMenu(); ~CContextMenu(); private LONGm_cRef; }; class CClassFactory public IClassFactory { public STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); // IClassFactory STDMETHODIMP CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppvObject); STDMETHODIMP LockServer(BOOL fLock); }; aaa.cpp #pragma comment(lib, "shlwapi.lib") #include ShlObj.h #include Shlwapi.h #include Windows.h #include "aaa.h" // 関数プロトタイプ宣言 void LockModule(BOOL bLock); BOOL CreateRegistryKey(HKEY hKeyRoot, LPTSTR lpszKey, LPTSTR lpszValue, LPTSTR lpszData); void Trace(LPCTSTR ptcFormat, ...); // グローバル変数 const CLSIDCLSID_ContextMenuSample = {0x6986c66a, 0x401f, 0x4535, {0x89, 0x18, 0x48, 0x07, 0x29, 0x39, 0xd2, 0xa4}}; const TCHARg_szClsid[] = TEXT("{6986C66A-401F-4535-8918-48072939D2A4}"); const TCHARg_szProgid[] = TEXT("Sample.ShellExtension"); const TCHARg_szExt[] = TEXT(".aaa"); const TCHARg_szHandlerName[] = TEXT("My ShortcutMenu Handler"); LONGg_lLocks = 0; HINSTANCEg_hinstDll = NULL; //============================================================================== // CContextMenu CContextMenu CContextMenu() { m_cRef = 1; LockModule(TRUE); } CContextMenu ~CContextMenu() { LockModule(FALSE); } STDMETHODIMP CContextMenu QueryInterface(REFIID riid, void **ppvObject) { *ppvObject = NULL; if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IContextMenu)) { *ppvObject = static_cast IContextMenu * (this); } else if (IsEqualIID(riid, IID_IPersist) || IsEqualIID(riid, IID_IShellExtInit)) { *ppvObject = static_cast IShellExtInit * (this); } else { return E_NOINTERFACE; } AddRef(); return S_OK; } STDMETHODIMP_(ULONG) CContextMenu AddRef() { return InterlockedIncrement( m_cRef); } STDMETHODIMP_(ULONG) CContextMenu Release() { if (InterlockedDecrement( m_cRef) == 0) { delete this; return 0; } return m_cRef; } //------------------------------------------------------------------------------ // IContextMenu STDMETHODIMP CContextMenu QueryContextMenu( HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) { MENUITEMINFOmii; if (uFlags CMF_DEFAULTONLY) { return MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_NULL, 0); } mii.cbSize= sizeof (MENUITEMINFO); mii.fMask= MIIM_ID | MIIM_TYPE; mii.fType= MFT_STRING; mii.wID= idCmdFirst; mii.dwTypeData= TEXT("A"); InsertMenuItem(hmenu, indexMenu, TRUE, mii); return MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_NULL, 1); } STDMETHODIMP CContextMenu GetCommandString( UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax) { switch (idCmd) { case 0 switch (uFlags) { case GCS_HELPTEXTA lstrcpyA(pszName, "説明文A"); break; case GCS_HELPTEXTW lstrcpyW((LPWSTR)pszName, L"説明文A"); break; case GCS_VERBA lstrcpyA(pszName, "A"); break; case GCS_VERBW lstrcpyW((LPWSTR)pszName, L"A"); break; } break; default return E_FAIL; } return S_OK; } STDMETHODIMP CContextMenu InvokeCommand(LPCMINVOKECOMMANDINFO pici) { UINTidCmd = LOWORD(pici- lpVerb); if (HIWORD(pici- lpVerb) != 0) { return E_INVALIDARG; } switch (idCmd) { case 0 MessageBox(NULL, TEXT("A"), TEXT("OK"), MB_OK); break; } return S_OK; } //------------------------------------------------------------------------------ // IShellExtInit STDMETHODIMP CContextMenu Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID) { Trace(L"Initialize\n"); //Trace(L"%u\n", pidlFolder- mkid.cb); return S_OK; } //============================================================================== // CClassFactory STDMETHODIMP CClassFactory QueryInterface(REFIID riid, void **ppvObject) { *ppvObject = NULL; if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IClassFactory)) { *ppvObject = static_cast IClassFactory * (this); } else { return E_NOINTERFACE; } AddRef(); return S_OK; } STDMETHODIMP_(ULONG) CClassFactory AddRef() { LockModule(TRUE); return 2; } STDMETHODIMP_(ULONG) CClassFactory Release() { LockModule(FALSE); return 1; } //------------------------------------------------------------------------------ // IClassFactory STDMETHODIMP CClassFactory CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppvObject) { CContextMenu*p; HRESULThr; *ppvObject = NULL; if (pUnkOuter != NULL) { return CLASS_E_NOAGGREGATION; } p = new CContextMenu(); if (p == NULL) { return E_OUTOFMEMORY; } hr = p- QueryInterface(riid, ppvObject); p- Release(); return hr; } STDMETHODIMP CClassFactory LockServer(BOOL fLock) { LockModule(fLock); return S_OK; } //============================================================================== // DLL Export STDAPI DllCanUnloadNow(void) { return (g_lLocks == 0) ? S_OK S_FALSE; } STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) { static CClassFactory serverFactory; HRESULThr; *ppv = NULL; if (IsEqualCLSID(rclsid, CLSID_ContextMenuSample)) { hr = serverFactory.QueryInterface(riid, ppv); } else { hr = CLASS_E_CLASSNOTAVAILABLE; } return hr; } STDAPI DllRegisterServer(void) { TCHARszModulePath[MAX_PATH]; TCHARszKey[256]; wsprintf(szKey, TEXT("CLSID\\%s"), g_szClsid); if (!CreateRegistryKey(HKEY_CLASSES_ROOT, szKey, NULL, TEXT("ShellExtension Sample"))) { return E_FAIL; } GetModuleFileName(g_hinstDll, szModulePath, _countof(szModulePath)); wsprintf(szKey, TEXT("CLSID\\%s\\InprocServer32"), g_szClsid); if (!CreateRegistryKey(HKEY_CLASSES_ROOT, szKey, NULL, szModulePath)) { return E_FAIL; } wsprintf(szKey, TEXT("CLSID\\%s\\InprocServer32"), g_szClsid); if (!CreateRegistryKey(HKEY_CLASSES_ROOT, szKey, TEXT("ThreadingModel"), TEXT("Apartment"))) { return E_FAIL; } wsprintf(szKey, TEXT("%s"), g_szExt); if (!CreateRegistryKey(HKEY_CLASSES_ROOT, szKey, NULL, (LPTSTR)g_szProgid)) { return E_FAIL; } wsprintf(szKey, TEXT("%s\\shellex\\ContextMenuHandlers\\%s"), g_szProgid, g_szHandlerName); if (!CreateRegistryKey(HKEY_CLASSES_ROOT, szKey, NULL, (LPTSTR)g_szClsid)) { return E_FAIL; } return S_OK; } STDAPI DllUnregisterServer(void) { TCHARszKey[256]; wsprintf(szKey, TEXT("CLSID\\%s"), g_szClsid); SHDeleteKey(HKEY_CLASSES_ROOT, szKey); SHDeleteKey(HKEY_CLASSES_ROOT, g_szExt); SHDeleteKey(HKEY_CLASSES_ROOT, g_szProgid); return S_OK; } BOOL APIENTRY DllMain( HINSTANCEhinstDLL, DWORDfdwReason, LPVOIDlpvReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH g_hinstDll = hinstDLL; DisableThreadLibraryCalls(hinstDLL); break; } return TRUE; } //============================================================================== // Function void LockModule(BOOL bLock) { if (bLock) { InterlockedIncrement( g_lLocks); } else { InterlockedDecrement( g_lLocks); } } BOOL CreateRegistryKey(HKEY hKeyRoot, LPTSTR lpszKey, LPTSTR lpszValue, LPTSTR lpszData) { HKEYhKey; LONGlResult; DWORDdwSize; lResult = RegCreateKeyEx(hKeyRoot, lpszKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, hKey, NULL); if (lResult != ERROR_SUCCESS) { return FALSE; } if (lpszData != NULL) { dwSize = (lstrlen(lpszData) + 1) * sizeof (TCHAR); } else { dwSize = 0; } RegSetValueEx(hKey, lpszValue, 0, REG_SZ, (LPBYTE)lpszData, dwSize); RegCloseKey(hKey); return TRUE; } void Trace(LPCTSTR ptcFormat, ...) { va_listargs; TCHARatcBuf[512]; intiRet; va_start(args, ptcFormat); iRet = wsprintf(atcBuf, ptcFormat, args); if (0 iRet) { OutputDebugString(atcBuf); } va_end(args); }
https://w.atwiki.jp/nada2020/pages/28.html
EXTRA CONTENTS バイオハザード5のEXTRA CONTENTSの 「LOST IN NIGHTMARES」、「DESPERATE ESCAPE」、「VERSUS」を対象にトロフィーの解放をお手伝いします。 対応日 土日 対応時間 19時以降~ ※事前申告なしでの招待は受け付けません。また、招待メールに必ず「nada@wiki」というキーワードを入力してもらえれば対応いたします。 ※日によって対応できない場合があります。
https://w.atwiki.jp/ketcindy-eng/pages/16.html
During the creation
https://w.atwiki.jp/wximsupport/pages/35.html
NSTextInputClientの使い方(というより実装方法)のメモ 用語とか marked text未確定の文字列 insertion point 挿入位置 selection range 選択範囲 marked textがあるならば、selection rangeはmarked text内部にないといけない Viewがするべきこと kewDown の処理 NSTextInputContext -handleEvent を呼ぶ NSTextInputClientの実装 NSTextInputClientとNSTextInputの比較 NSTextInputClient (Mac OS X 10.5以降)hasMarkedText (共通) markedRange (共通) selectedRange (共通) setMarkedText selectedRange replacementRange (引数replacementRange追加) unmarkText (共通) validAttributesForMarkedText (共通) attributedSubstringForProposedRange actualRange (引数actualRange追加) insertText replacementRange (引数replacementRange追加) characterIndexForPoint (共通) firstRectForCharacterRange actualRange (引数actualRange追加) doCommandBySelector (共通) attributedString (optional) fractionOfDistanceThroughGlyphForPoint (optional) baselineDeltaForCharacterAtIndex (optional) windowLevel (optional) drawsVerticallyForCharacterAtIndex (optional) NSTextInputhasMarkedText markedRange selectedRange setMarkedText selectedRange unmarkText validAttributesForMarkedText attributedSubstringFromRange insertText characterIndexForPoint firstRectForCharacterRange doCommandBySelector conversationIdentifier (NSTextInputClientでは削除)
https://w.atwiki.jp/pangyaserver/pages/23.html
RELEASE SRV2 @WebServer www Nome_000000000 new Service S4_Patch extracontents default にある画像をカスタマイズできる 階層が深いので実際はextracontents.xmlに書かれた http //127.0.0.1/S4_Patch/extracontents/default/ のほうを参照している つまりwwwフォルダ直下のS4_Patchのほうを編集する このdefaultフォルダには過去のお知らせ画像等が入っている フォルダ内のpangya_default.xmlを編集することでいろいろできる !-- -- で挟まれた部分は無効化される トップページのボタンは6個まで表示できる クエストボタン event name="one_day_quest" normal name="2012_quest_arin_main_btn_n.tga"/ over name="2012_quest_arin_main_btn_o.tga"/ blink name="2012_quest_arin_main_btn_o.tga"/ /event または のボタンを押すとクエストが開く 画像リンクボタン image file name="event_notice_toon6_01.jpg"/ file name="event_notice_toon6_02.jpg"/ file name="event_notice_toon6_03.jpg"/ file name="event_notice_toon6_04.jpg"/ normal name="icon_2014_arin_n.tga"/ over name="icon_2014_arin_o.tga"/ blink name="icon_2014_arin_p.tga"/ /image 過去のアリンのマジックショーなんかも表示できたりする お知らせ notice file name="2016121601.jpg"/ file name="2016121600.jpg" / file name="2016121500.jpg" / /notice file nameに書かれた画像ファイルを表示している。最大10枚表示可能 ファイル名を変えたり、新規画像を入れて表示させることもできる 解像度は550x400 日本パンヤはnotice_popup00.jpgのような形式で常に上書きされていたため過去の資産を探すのは困難 旧ティッキーポイントショップ event name="pointshop" normal name="ps_btn_n.tga"/ over name="ps_btn_o.tga"/ blink name="ps_btn_o.tga"/ /event 廃止されたポイントショップ サーバー側が対応していないのかポイント交換ができない ロード画面 loading wallpaper prob="1" file name="background_01.jpg"/ /wallpaper /loading コースロード中のランダム背景画像 デフォルトでは14枚だがコピペしていくらでも増やすことができる これもまた好きな画像をなんでも追加できる 解像度は800x600 コース広告 replacement file name="green_ppl01.jpg"/ file name="green_ppl02.jpg"/ file name="green_ppl03.jpg"/ /replacement コース中にある看板の画像を編集できる 解像度は256x128 データはパンヤ起動時にサーバーから取得してローカルフォルダに保存される
https://w.atwiki.jp/hotmilk005/pages/26.html
NSObject ∟NSResponder ∟NSView ∟NSControl ∟NSButton NSTextFieldはiPhoneでいうUITextFieldはもちろん、UILabelにもなるようです。 NSTextField *tf=[[NSTextField alloc]initWithFrame CGRectMake(100, 100, 100, 100)]; tf.stringValue=@"NSTextField"; tf.backgroundColor=[NSColor clearColor]; [tf setEnabled NO]; [tf setBordered NO]; [tf sizeToFit]; [self.window.contentView addSubview tf]; プロパティ名 読専 効果 引数、戻り値 allowsEditingTextAttributes テキストのフォント、色の変更の可否 NSAttributedString backgroundColor テキストフィールドの背景色の変更 NSColor bezelStyle 角を丸にするかの設定 下記参照 delegate デリゲート ? drawsBackground 背景色の変更の可否 BOOL importsGraphics ドラッグ&ドロップでテキストフィールドに画像を乗せれるの可否。NOにすると画像のディレクトリ内容が代わりに書き込まれる BOOL isBezeled ◯ デザインの変更の可否 BOOL isBordered ◯ 境界線の有無 BOOL isEditable ◯ テキストの編集の可否 BOOL isSelectable ◯ テキストの選択の可否 BOOL textColor テキストの色 NSColor メソッド名 効果 - (void)setAllowsEditingTextAttributes (BOOL)flag テキストのフォント、色の変更の可否 - (void)setBackgroundColor (NSColor *)aColor テキストフィールドの背景色の変更 - (void)setBezeled (BOOL)flag デザインの変更の可否 - (void)setBezelStyle (NSTextFieldBezelStyle)style 角を丸にするかの設定 - (void)setBordered (BOOL)flag 境界線の有無 - (void)setDelegate (id NSTextFieldDelegate )anObject デリゲート - (void)setDrawsBackground (BOOL)flag 背景色の変更の可否 - (void)setEditable (BOOL)flag テキストの選択の可否 - (void)setImportsGraphics (BOOL)flag ドラッグ&ドロップでテキストフィールドに画像を乗せれるの可否。NOにすると画像のディレクトリ内容が代わりに書き込まれる - (void)setSelectable (BOOL)flag テキストの選択の可否 - (void)setTextColor (NSColor *)aColor テキストの色 ベゼルスタイル NSTextFieldSquareBezel = 0 ノーマル NSTextFieldRoundedBezel = 1 角が丸くなる
https://w.atwiki.jp/ketcindy-eng/pages/18.html
During the creation
https://w.atwiki.jp/formallang/pages/23.html
"Mappings and Grammars on Trees" (1970) Tree Transducer を提案すると同時に Context-Free Tree Grammar(と今では呼ばれているシステム)を提案した論文。 William C. Rounds Mathematical Systems Theory, vol. 4, pp. 257-287 http //dx.doi.org/10.1007/BF01695769 Context-Free Tree Grammar (CFTG) とは G = Σ,N,S,R Σ アルファベット(要は木のノードのラベル。ranked = ラベルによってこの数は固定) N 非終端記号(ranked) S ∈ N 開始記号。rank=0 R 導出規則 A(x1,...,xk) → RHS where RHS = σ(RHS,...,RHS) | A(RHS,...,RHS) の集まり S から始めて非終端記号がなくなるまで書き換えを続けてってできたものが出力木、という形で木言語を定義する。 Context-Free Grammar(文字列) との関係 全ての非終端記号を rank=1 か rank=0 にすると文字列の文脈自由文法になる S→aSa | bSb | a | b は S→S1($) S1(x) → a(S1(a(y))) | b(S(b(y))) | a(y) | b(y) こういう。 Macro Grammarとの関係 文字列 ⇔ 木 に関して Context-Free Grammar の導出木 ⇔ Regular Tree Grammar Macro Grammar の導出木 ⇔ Context-Free Tree Grammar のような対応関係になっている。一段ずれたところに対応関係。 IO と OI Macro Grammar 同様に、IO と OI の区別は本質的に重要。[Rounds70] では OI だけ考察されている。IO と OI をCFTGに最初に持ち込んで議論したのはどの論文だろう。。。 Pushdown? 文字列のContext-Free Languageはプッシュダウンオートマトンと対応することが知られている。木構造の場合は?いくつかの結果がある。 トップダウンのプッシュダウンツリーオートマトン。かなり自然なモデル。OI-CFTGと対応する。 "Pushdown Tree Automata" (1983) Irène Guessarian Mathematical Systems Theory, vol. 16, pp. 237-263 http //dx.doi.org/10.1007/BF01744582 ボトムアップ。これもOI-CFTGと対応する。左辺にnonlinearな変数をおいて木と木の同値性をチェックできるモデルになっているんだけどちょっと強力すぎやしないかなあ。 "Tree Pushdown Automata" (1985) Karl M. Schimpf Jean H. Gallier Journal of Computer and System Sciences, vol. 30, pp. 25-40 http //dx.doi.org/10.1016/0022-0000(85)90002-9 IO-CFTGに対応するプッシュダウンツリーオートマトンは知られていない?
https://w.atwiki.jp/api_programming/pages/73.html
Contextとは contextリストの同期 Contextsの取得レスポンス Contextsの追加 Contextsの編集 Contextsの削除レスポンス エラーコード Contextとは GTDでよく出てくる概念で、そのタスクを完了すべき状況を指す(ことが多い)。例えば、「仕事」「家庭」「買い物」等々がcontextの例。 contextリストの同期 Syncing contexts is fairly straight forward. The first thing to do is add any new contexts you have created and delete any contexts that you have deleted. Then, look at the "lastedit_context" timestamp returned from Account Info to determine if any changes have happened on the server since the last time you synced. If yes, then you need to fetch the contexts from the server and integrate this into your local copy. This is where you would do conflict resolution if a context was edited in both places. After this, if you have any contexts that you edited, you can send these edits up to the server. Sync Flowchart Contextsの取得 contexts/get.php http //api.toodledo.com/3/contexts/get.php?access_token=yourtoken GET,POST レスポンス contextの名前とidのリスト(とpravate) [{"id" 123,"name" "Work","private" 0},{"id" 456,"name" "Home","private" 1},{"id" 789,"name" "Car","private" 0}] xml形式はf=xmlオプションで取得 Contextsの追加 Add a context using the "contexts/add.php" API call. You can access this via POST. Context names must be unique within an account. If you try to add a context that already exists, you ll get an error. Each user can have up to 1000 contexts. If you try to add more than this, you will get an error. name A text string up to 32 characters. (required) private A boolean value (0 or 1) that describes if this context can be shared. A value of 1 means that this context is private. http //api.toodledo.com/3/contexts/add.php name=MyContext access_token=yourtoken If the add was successful the new context will be returned. [{"id" 12345,"name" "MyContext","private" 0}] Contextsの編集 Edit a context using the "contexts/edit.php" API call. You can access this via POST. Context names must be unique within an account. If you try to edit the context name to one that already exists, you will get an error. If you try to edit the context, but pass in the same values that already exist on the server, you will get an error. You should avoid making unnecessary edits. id The id number of the context to edit. (required) name A text string up to 32 characters. (required) private A boolean value (0 or 1) that describes if this context can be shared. A value of 1 means that this context is private. http //api.toodledo.com/3/contexts/edit.php id=12345 name=MyContext access_token=yourtoken If the edit was successful the edited context will be returned. [{"id" 12345,"name" "MyContext","private" 0}] Contextsの削除 contexts/delete.phphttp //api.toodledo.com/3/contexts/delete.php id=12345;access_token=yourtoken POST コンテキストのidが必須 削除後、削除されたコンテクストを持っていたタスクは、コンテクストがnoneに設定される。 レスポンス 正常に削除されると以下のようなレスポンスが返ってくる {"deleted" 12345} エラーコード Any of the API calls can return error messages. Here is a list of the error messages that you may receive from the contexts API endpoints. If there was an error when editing or deleting a context, the id number that you attempted to edit will be included in the error s "ref" field for your reference. 301 Your context must have a name. 302 A context with that name already exists. 303 Max contexts reached (1000). 304 Empty id. 305 Invalid context. 306 Nothing was edited. Examples {"errorCode" 302,"errorDesc" "A context with that name already exists","ref" 1234} error id="302" ref="1234" A context with that name already exists /error
https://w.atwiki.jp/fxext/pages/25.html
browser.js プロパティ contextTab タブコンテキストメニューの親タブを返す。親タブがない場合はカレントタブを返す。 メソッド updateContextMenu タブコンテキストメニューを表示する時に呼ばれる。this.contextTab の更新と、メニュー項目の表示/非表示などの設定を行う。